package config

import (
	"github.com/BurntSushi/toml"
	"path/filepath"
	"sync"
)

type Config struct {
	name     string
	version  string
	path     string
	fileType int
	IsLocal  bool
	Address  string
	internal int
	content  interface{}
	//state chan
	once    sync.Once
	cfgLock sync.RWMutex
}

func (config *Config) Name() string {
	return config.name
}

func (config *Config) Version() string {
	return config.version
}

/********
加载文件内容
*/
func (config *Config) Load() {
	if config.path == "" {
		return
	}
	config.cfgLock.Lock()
	defer config.cfgLock.Unlock()

	if config.IsLocal {
		/*******如果是本地,从本地配置文件读取*********/
		config.once.Do(func() {
			filePath, err := filepath.Abs(config.path)
			if err != nil {
				panic(err)
			}
			if _, err := toml.DecodeFile(filePath, config.content); err != nil {
				panic(err)
			}
		})
	} else {
		/****fetch data from remote datecenter***/
	}

}

/********从新加载数据**********/
func (config *Config) ReLoad() {
	filePath, err := filepath.Abs(config.path)
	if err != nil {
		panic(err)
	}
	if _, err := toml.DecodeFile(filePath, config.content); err != nil {
		panic(err)
	}
}
